package gwtappcontainer.server.apps.insight;
import static org.junit.Assert.assertTrue;
import gwtappcontainer.server.Limits;
import gwtappcontainer.server.apps.APIException;
import gwtappcontainer.server.apps.security.PrivilegeRepository;
import gwtappcontainer.server.apps.security.SecurityAPITest;
import gwtappcontainer.server.apps.security.UserRepository;
import gwtappcontainer.shared.apis.APIResponse.Status;
import gwtappcontainer.shared.apps.insight.Center;
import gwtappcontainer.shared.apps.insight.Member;
import gwtappcontainer.shared.apps.insight.Member.ContactDetails;
import gwtappcontainer.shared.apps.insight.ProgramType;
import gwtappcontainer.shared.apps.insight.UnlistedProgram;
import gwtappcontainer.testhelpers.TestHelper;
import java.util.ArrayList;
import java.util.List;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import com.google.appengine.tools.development.testing.LocalDatastoreServiceTestConfig;
import com.google.appengine.tools.development.testing.LocalServiceTestHelper;
public class MemberRepositoryTest {
private final static String SUPER_USER = "sathyanarayanant@gmail.com";
private final static String USER_WITH_EDITMEMBER_PRIVILEGE = "userwitheditmember@previlege.com";
private final static String VALID_USER = "validuser@previlege.com";
private final LocalServiceTestHelper helper =
new LocalServiceTestHelper(new LocalDatastoreServiceTestConfig());
@Before
public void setUp() {
System.setProperty("junittesting", "true");
helper.setUp();
PrivilegeRepository.addPrivilege(Privileges.EDIT_MEMBER, SUPER_USER);
UserRepository.addUser(USER_WITH_EDITMEMBER_PRIVILEGE, SUPER_USER);
UserRepository.assignPrivilegeToUser(USER_WITH_EDITMEMBER_PRIVILEGE,
Privileges.EDIT_MEMBER, SUPER_USER);
UserRepository.addUser(VALID_USER, SUPER_USER);
}
@After
public void tearDown() {
TestHelper.deleteAllData();
SecurityAPITest.purgeAllSecurityEntities();
helper.tearDown();
}
@Test
public void getTest() {
Center sgp = CenterRepository.add("singapore");
ContactDetails contactDetails = new ContactDetails();
contactDetails.firstName = "sathya";
contactDetails.email = "sathya.t@ishafoundation.org";
MemberRepository.add(contactDetails, sgp.id, SUPER_USER);
Member member = MemberRepository.get("sathya.t@ishafoundation.org", "sathya.t@ishafoundation.org");
assertTrue(member != null);
assertTrue(member.id != 0);
assertTrue(member.contactDetails.firstName.equals("sathya"));
assertTrue(member.contactDetails.email.equals("sathya.t@ishafoundation.org"));
assertTrue(member.owningCenter.id == sgp.id);
assertTrue(member.owningCenter.name.equals("singapore"));
//cannot get by non existant email or id
assertTrue(null == MemberRepository.get("nonexistant@email.com", SUPER_USER));
assertTrue(null == MemberRepository.get(1093890, SUPER_USER));
Center penang = CenterRepository.add("penang");
Center kl = CenterRepository.add("kl");
MemberRepository.addCenter(member.id, penang.id, USER_WITH_EDITMEMBER_PRIVILEGE);
MemberRepository.addCenter(member.id, kl.id, USER_WITH_EDITMEMBER_PRIVILEGE);
member = MemberRepository.get(member.id, SUPER_USER);
assertTrue(member.id != 0);
assertTrue(member.contactDetails.firstName.equals("sathya"));
assertTrue(member.contactDetails.email.equals("sathya.t@ishafoundation.org"));
assertTrue(member.additionalCenters.size() == 2);
//should be sorted by center name
assertTrue(member.additionalCenters.get(0).name.equals("kl"));
assertTrue(member.additionalCenters.get(1).name.equals("penang"));
//privilege test
//should be a valid user to get by id
member = MemberRepository.get(member.id, VALID_USER);
//invalid user cannot get member
try {
MemberRepository.get(member.id, "invaliduser@invalid.com");
assertTrue(false);
} catch (APIException ex) {
assertTrue(ex.statusCode == Status.ERROR_INVALID_USER);
}
//member can view his own entry
member = MemberRepository.get(member.id, "sathya.t@ishafoundation.org");
member = MemberRepository.get("sathya.t@ishafoundation.org", "sathya.t@ishafoundation.org");
}
@Test
public void addTest() {
Center sgp = CenterRepository.add("singapore");
ContactDetails contactDetails = new ContactDetails();
contactDetails.firstName = "sathya";
contactDetails.email = "invalid email";
//cannot add an invalid email
try {
MemberRepository.add(contactDetails, sgp.id, SUPER_USER);
assertTrue(false);
} catch (APIException ex) {
assertTrue(ex.statusCode == Status.ERROR_RESOURCE_INCORRECTLY_SPECIFIED);
}
contactDetails.email = "sathya.t@ishafoundation.org";
MemberRepository.add(contactDetails, sgp.id, SUPER_USER);
Member member = MemberRepository.get("sathya.t@ishafoundation.org", SUPER_USER);
assertTrue(member != null);
assertTrue(member.id != 0);
assertTrue(member.contactDetails.firstName.equals("sathya"));
assertTrue(member.contactDetails.email.equals("sathya.t@ishafoundation.org"));
//cannot add a duplicate email address
try {
MemberRepository.add(member.contactDetails, member.owningCenter.id, SUPER_USER);
assertTrue(false);
} catch (APIException ex) {
assertTrue(ex.statusCode == Status.ERROR_RESOURCE_ALREADY_EXISTS);
}
//cannot add without primary center
try {
MemberRepository.add(contactDetails, 0, SUPER_USER);
assertTrue(false);
} catch (APIException ex) {
assertTrue(ex.statusCode == Status.ERROR_RESOURCE_DOES_NOT_EXIST);
}
try {
MemberRepository.add(contactDetails, 100, SUPER_USER); //non existent center
assertTrue(false);
} catch (APIException ex) {
assertTrue(ex.statusCode == Status.ERROR_RESOURCE_DOES_NOT_EXIST);
}
//test privilege
try {
MemberRepository.add(contactDetails, sgp.id, VALID_USER);
assertTrue(false);
} catch (APIException ex) {
assertTrue(ex.statusCode == Status.ERROR_INSUFFICIENT_PERMISSION);
}
contactDetails.email = "sathya.isha@gmail.com";
MemberRepository.add(contactDetails, sgp.id, USER_WITH_EDITMEMBER_PRIVILEGE);
//no exception
}
@Test
public void updateContactDetailsTest() {
Center sgp = CenterRepository.add("singapore");
ContactDetails contactDetails = new ContactDetails();
contactDetails.firstName = "sathya";
contactDetails.email = "sathya.isha@gmail.com";
MemberRepository.add(contactDetails, sgp.id, SUPER_USER);
Member member = MemberRepository.get("sathya.isha@gmail.com", SUPER_USER);
assertTrue(null != member);
int id = member.id;
//update contact details
contactDetails.firstName = "sathyanarayanan";
contactDetails.lastName = "thilakan";
contactDetails.email = "sathya.t@ishafoundation.org";
contactDetails.phone = "+6598361844";
contactDetails.homeAddress = "blk 292b, 09-210, compassvale street";
contactDetails.officeAddress = "level 28, south tower, one raffles quay";
contactDetails.homePhone = "6565227030";
contactDetails.officePhone = "6563083013";
contactDetails.singaporeNRIC = "s8097340D";
MemberRepository.updateContactDetails(id, contactDetails, SUPER_USER);
member = MemberRepository.get(member.id, SUPER_USER);
assertTrue(member != null);
assertTrue(member.contactDetails.firstName.equals(contactDetails.firstName));
assertTrue(member.contactDetails.middleName == null);
assertTrue(member.contactDetails.lastName.equals(contactDetails.lastName));
assertTrue(member.contactDetails.email.equals(contactDetails.email));
assertTrue(member.contactDetails.phone.equals(contactDetails.phone));
assertTrue(member.contactDetails.homeAddress.equals(contactDetails.homeAddress));
assertTrue(member.contactDetails.officeAddress.equals(contactDetails.officeAddress));
assertTrue(member.contactDetails.homePhone.equals(contactDetails.homePhone));
assertTrue(member.contactDetails.officePhone.equals(contactDetails.officePhone));
assertTrue(member.contactDetails.singaporeNRIC.equals(contactDetails.singaporeNRIC));
//email cannot be invalid when updating
contactDetails.email = "invalid";
try {
MemberRepository.updateContactDetails(id, contactDetails, SUPER_USER);
assertTrue(false);
} catch (APIException ex) {
assertTrue(ex.statusCode == Status.ERROR_RESOURCE_INCORRECTLY_SPECIFIED);
}
//cannot update non existent member
try {
MemberRepository.updateContactDetails(98378, contactDetails, SUPER_USER);
assertTrue(false);
} catch (APIException ex) {
assertTrue(ex.statusCode == Status.ERROR_RESOURCE_DOES_NOT_EXIST);
}
//can update one's own record without any privilege
contactDetails.email = "sathya.t@ishafoundation.org";
MemberRepository.updateContactDetails(id, contactDetails, "sathya.t@ishafoundation.org");
//but privilege required to edit someone else's record
try {
MemberRepository.updateContactDetails(id, contactDetails, "sathya.isha@gmail.com");
assertTrue(false);
} catch (APIException ex) {
assertTrue(ex.statusCode == Status.ERROR_INVALID_USER);
}
//but not for user with edit member privilege
MemberRepository.updateContactDetails(id, contactDetails, USER_WITH_EDITMEMBER_PRIVILEGE);
//no exception
//can change email address
contactDetails.email = "sathya.isha@gmail.com";
MemberRepository.updateContactDetails(id, contactDetails, "sathya.t@ishafoundation.org");
member = MemberRepository.get(id, SUPER_USER);
assertTrue(member.contactDetails.email.equals("sathya.isha@gmail.com"));
//cannot get by old email id
assertTrue(null == MemberRepository.get("sathya.t@ishafoundation.org", SUPER_USER));
}
@Test
public void addCenterTest() {
CenterRepository.add("sgp");
Center sgp = CenterRepository.get("sgp");
CenterRepository.add("kl");
Center kl = CenterRepository.get("kl");
CenterRepository.add("penang");
Center penang = CenterRepository.get("penang");
ContactDetails contactDetails = new ContactDetails();
contactDetails.firstName = "sathya";
contactDetails.email = "sathya.t@ishafoundation.org";
MemberRepository.add(contactDetails, sgp.id, SUPER_USER);
Member member = MemberRepository.get("sathya.t@ishafoundation.org", SUPER_USER);
int id = member.id;
//can add center for one's own record or should have editmember privilege
try {
MemberRepository.addCenter(id, kl.id, VALID_USER);
assertTrue(false);
} catch (APIException ex) {
assertTrue(ex.statusCode == Status.ERROR_INSUFFICIENT_PERMISSION);
}
MemberRepository.addCenter(id, penang.id, USER_WITH_EDITMEMBER_PRIVILEGE);
MemberRepository.addCenter(id, kl.id, USER_WITH_EDITMEMBER_PRIVILEGE);
member = MemberRepository.get(id, SUPER_USER);
assertTrue(member.additionalCenters.size() == 2);
//should be sorted by center
assertTrue(member.additionalCenters.get(0).name.equals("kl"));
assertTrue(member.additionalCenters.get(1).name.equals("penang"));
//adding duplicate causes exception
try {
MemberRepository.addCenter(member.id, kl.id, USER_WITH_EDITMEMBER_PRIVILEGE);
assertTrue(false);
} catch (Exception ex) {
assertTrue(true);
}
}
@Test
public void deleteCenterTest() {
CenterRepository.add("singapore");
Center sgp = CenterRepository.get("singapore");
CenterRepository.add("kl");
Center kl = CenterRepository.get("kl");
CenterRepository.add("penang");
Center penang = CenterRepository.get("penang");
ContactDetails contactDetails = new ContactDetails();
contactDetails.firstName = "sathya";
contactDetails.email = "sathya.t@ishafoundation.org";
MemberRepository.add(contactDetails, sgp.id, SUPER_USER);
Member member = MemberRepository.get("sathya.t@ishafoundation.org", SUPER_USER);
int id = member.id;
MemberRepository.addCenter(id, penang.id, SUPER_USER);
MemberRepository.addCenter(id, kl.id, SUPER_USER);
member = MemberRepository.get(member.id, SUPER_USER);
assertTrue(member.additionalCenters.size() == 2);
//can delete center for one's own record or should have editmember
try {
MemberRepository.deleteCenter(member.id, kl.id, VALID_USER);
assertTrue(false);
} catch (APIException ex) {
assertTrue(ex.statusCode == Status.ERROR_INSUFFICIENT_PERMISSION);
}
MemberRepository.deleteCenter(id, kl.id, "sathya.t@ishafoundation.org");
MemberRepository.deleteCenter(id, penang.id, USER_WITH_EDITMEMBER_PRIVILEGE);
member = MemberRepository.get(member.id, SUPER_USER);
assertTrue(member.additionalCenters.size() == 0);
//cannot delete owning center
try {
MemberRepository.deleteCenter(id, sgp.id, USER_WITH_EDITMEMBER_PRIVILEGE);
assertTrue(false);
} catch (APIException ex) {
assertTrue(ex.statusCode == Status.ERROR_PRECONDITION_FAILURE);
}
}
@Test
public void addDeleteUnlistedProgram() {
CenterRepository.add("singapore");
Center singapore = CenterRepository.get("singapore");
ProgramTypeRepository.add("bsp");
ProgramTypeRepository.add("ssy");
ProgramType bsp = ProgramTypeRepository.get("bsp");
ProgramType ssy = ProgramTypeRepository.get("ssy");
ContactDetails contactDetails = new ContactDetails();
contactDetails.firstName = "sathya";
contactDetails.email = "sathya.t@ishafoundation.org";
MemberRepository.add(contactDetails, singapore.id, SUPER_USER);
Member member = MemberRepository.get("sathya.t@ishafoundation.org", SUPER_USER);
int id = member.id;
UnlistedProgram unlistedProgram = new UnlistedProgram();
unlistedProgram.programTypeId = bsp.id;
unlistedProgram.programType = bsp.name;
unlistedProgram.month = 12;
unlistedProgram.year = 2000;
unlistedProgram.venue = "isha yoga center";
unlistedProgram.teacher = "sadhguru";
MemberRepository.addUnlistedProgram(id, unlistedProgram, SUPER_USER);
unlistedProgram.programTypeId = ssy.id;
unlistedProgram.programType = ssy.name;
unlistedProgram.month = 5;
unlistedProgram.year = 2000;
unlistedProgram.venue = "mylapore";
unlistedProgram.teacher = "swaminathan";
MemberRepository.addUnlistedProgram(id, unlistedProgram, SUPER_USER);
member = MemberRepository.get(id, SUPER_USER);
assertTrue(member.unlistedPrograms.size() == 2);
//should be sorted by date
assertTrue(member.unlistedPrograms.get(0).programTypeId == ssy.id);
assertTrue(member.unlistedPrograms.get(0).programType.equals("ssy"));
assertTrue(member.unlistedPrograms.get(0).month == 5);
assertTrue(member.unlistedPrograms.get(0).year == 2000);
assertTrue(member.unlistedPrograms.get(0).venue.equals("mylapore"));
assertTrue(member.unlistedPrograms.get(0).teacher.equals("swaminathan"));
assertTrue(member.unlistedPrograms.get(1).programTypeId == bsp.id);
//delete unlisted program
int ssyId = member.unlistedPrograms.get(0).id;
int bspId = member.unlistedPrograms.get(1).id;
MemberRepository.deleteUnlistedProgram(ssyId, SUPER_USER);
member = MemberRepository.get(member.id, SUPER_USER);
assertTrue(member.unlistedPrograms.size() == 1);
assertTrue(member.unlistedPrograms.get(0).programTypeId == bsp.id);
MemberRepository.deleteUnlistedProgram(bspId, SUPER_USER);
member = MemberRepository.get(member.id, SUPER_USER);
assertTrue(member.unlistedPrograms.size() == 0);
//test privileges
//login should be the same user or should have privilege
try {
MemberRepository.addUnlistedProgram(member.id, unlistedProgram, VALID_USER);
assertTrue(false);
} catch (APIException ex) {
assertTrue(ex.statusCode == Status.ERROR_INSUFFICIENT_PERMISSION);
}
MemberRepository.addUnlistedProgram(member.id, unlistedProgram, "sathya.t@ishafoundation.org");
//no exception
MemberRepository.addUnlistedProgram(member.id, unlistedProgram,
USER_WITH_EDITMEMBER_PRIVILEGE);
//no exception
member = MemberRepository.get(member.id, SUPER_USER);
assertTrue(member.unlistedPrograms.size() == 2);
//should either have privilege or user's own record
try {
MemberRepository.deleteUnlistedProgram(member.unlistedPrograms.get(0).id,
VALID_USER);
assertTrue(false);
} catch (APIException ex) {
assertTrue(ex.statusCode == Status.ERROR_INSUFFICIENT_PERMISSION);
}
//user can edit his own record
MemberRepository.deleteUnlistedProgram(member.unlistedPrograms.get(0).id,
"sathya.t@ishafoundation.org");
//or need to have privilege
MemberRepository.deleteUnlistedProgram(member.unlistedPrograms.get(1).id,
USER_WITH_EDITMEMBER_PRIVILEGE);
member = MemberRepository.get(member.id, SUPER_USER);
assertTrue(member.unlistedPrograms.size() == 0);
//cannot delete non existant unlisted program
try {
MemberRepository.deleteUnlistedProgram(109289, //non existant
USER_WITH_EDITMEMBER_PRIVILEGE);
assertTrue(false);
} catch (APIException ex) {
assertTrue(ex.statusCode == Status.ERROR_RESOURCE_DOES_NOT_EXIST);
}
}
@Test
public void deleteUnlistedProgram() {
//test case is in addDeleteUnlistedProgram
}
@Test
public void getMemberIdAndContactDetailsTest() {
List<String> emails = new ArrayList<>();
emails.add("sathya.t@ishafoundation.org");
emails.add("sathya.isha@gmail.com");
List<Member> members = MemberRepository.getMemberIdAndContactDetails(emails, SUPER_USER);
assertTrue(members.size() == 0);
//add member
Center sgp = CenterRepository.add("singapore");
ContactDetails contactDetails = new ContactDetails();
contactDetails.firstName = "sathya";
contactDetails.email = "sathya.t@ishafoundation.org";
MemberRepository.add(contactDetails, sgp.id, SUPER_USER);
assertTrue(null != MemberRepository.get("sathya.t@ishafoundation.org", SUPER_USER));
contactDetails.email = "sathya.isha@gmail.com";
MemberRepository.add(contactDetails, sgp.id, SUPER_USER);
assertTrue(null != MemberRepository.get("sathya.isha@gmail.com", SUPER_USER));
contactDetails.email = "sathyanarayanant@gmail.com";
MemberRepository.add(contactDetails, sgp.id, SUPER_USER);
assertTrue(null != MemberRepository.get("sathyanarayanant@gmail.com", SUPER_USER));
members = MemberRepository.getMemberIdAndContactDetails(emails, SUPER_USER);
assertTrue(members.size() == 2);
//test privilege
try {
MemberRepository.getMemberIdAndContactDetails(emails, VALID_USER);
assertTrue(false);
} catch (APIException ex) {
assertTrue(ex.statusCode == Status.ERROR_INSUFFICIENT_PERMISSION);
}
MemberRepository.getMemberIdAndContactDetails(emails, USER_WITH_EDITMEMBER_PRIVILEGE);
//no exception
}
@Test
public void addManyTest() {
Center sgp = CenterRepository.add("singapore");
List<ContactDetails> contactDetailsList = new ArrayList<>();
ContactDetails contactDetails1 = new ContactDetails();
contactDetails1.email = "sathya.t@ishafoundation.org";
contactDetails1.firstName = "sathyanarayanan";
contactDetails1.lastName = "thilakan";
contactDetails1.phone = "+6598361844";
contactDetailsList.add(contactDetails1);
ContactDetails contactDetails2 = new ContactDetails();
contactDetails2.email = "ramya.c@ishafoundation.org";
contactDetails2.firstName = "ramya";
contactDetails2.lastName = "chidambaram";
contactDetailsList.add(contactDetails2);
ContactDetails contactDetails3 = new ContactDetails();
contactDetails3.email = "thulasidhar@gmail.com";
contactDetails3.firstName = "thulasidhar";
contactDetails3.phone = "+6592705371";
contactDetailsList.add(contactDetails3);
MemberRepository.addMany(contactDetailsList, sgp.id, USER_WITH_EDITMEMBER_PRIVILEGE);
Member member = MemberRepository.get("sathya.t@ishafoundation.org", SUPER_USER);
assertTrue(member != null);
assertTrue(member.contactDetails.email.equals("sathya.t@ishafoundation.org"));
assertTrue(member.contactDetails.firstName.equals("sathyanarayanan"));
assertTrue(member.contactDetails.lastName.equals("thilakan"));
assertTrue(member.contactDetails.phone.equals("+6598361844"));
assertTrue(member.owningCenter.id == sgp.id);
member = MemberRepository.get("ramya.c@ishafoundation.org", USER_WITH_EDITMEMBER_PRIVILEGE);
assertTrue(member != null);
assertTrue(member.contactDetails.email.equals("ramya.c@ishafoundation.org"));
assertTrue(member.contactDetails.firstName.equals("ramya"));
assertTrue(member.contactDetails.lastName.equals("chidambaram"));
assertTrue(member.owningCenter.id == sgp.id);
member = MemberRepository.get("thulasidhar@gmail.com", "thulasidhar@gmail.com");
assertTrue(member != null);
assertTrue(member.contactDetails.email.equals("thulasidhar@gmail.com"));
assertTrue(member.contactDetails.firstName.equals("thulasidhar"));
assertTrue(member.contactDetails.phone.equals("+6592705371"));
assertTrue(member.owningCenter.id == sgp.id);
//if an error occurs - whole transaction should be rolled back
contactDetailsList.clear();
contactDetails1 = new ContactDetails();
contactDetails1.email = "simansmile@yahoo.com";
contactDetailsList.add(contactDetails1);
contactDetails2 = new ContactDetails();
contactDetails2.email = "isha.meena@gmail.com";
contactDetailsList.add(contactDetails2);
try {
MemberRepository.addMany(contactDetailsList, 189000, USER_WITH_EDITMEMBER_PRIVILEGE);
assertTrue(false); //as center id is non existent
} catch (Exception ex) {
assertTrue(true);
}
//check whole transaction is rolled back
assertTrue(null == MemberRepository.get("simansmile@yahoo.com", "simansmile@yahoo.com"));
assertTrue(null == MemberRepository.get("isha.meena@gmail.com", "isha.meena@gmail.com"));
//privilege
contactDetailsList.clear();
contactDetails1 = new ContactDetails();
contactDetails1.email = "chandru@yahoo.com";
contactDetailsList.add(contactDetails1);
try {
MemberRepository.addMany(contactDetailsList, 189000, VALID_USER);
assertTrue(false);
} catch (APIException ex) {
assertTrue(ex.statusCode == Status.ERROR_INSUFFICIENT_PERMISSION);
}
}
@Test
public void updateManyContactDetailsTest() {
Center sgp = CenterRepository.add("singapore");
List<ContactDetails> contactDetailsList = new ArrayList<>();
ContactDetails contactDetails1 = new ContactDetails();
contactDetails1.email = "sathya.t@ishafoundation.org";
contactDetails1.firstName = "sathyanarayanan";
contactDetails1.lastName = "thilakan";
contactDetails1.phone = "+6598361844";
contactDetails1.officeAddress = "one raffles quay";
contactDetailsList.add(contactDetails1);
ContactDetails contactDetails2 = new ContactDetails();
contactDetails2.email = "ramya.c@ishafoundation.org";
contactDetails2.firstName = "ramya";
contactDetails2.lastName = "chidambaram";
contactDetailsList.add(contactDetails2);
ContactDetails contactDetails3 = new ContactDetails();
contactDetails3.email = "thulasidhar@gmail.com";
contactDetails3.firstName = "thulasidhar";
contactDetails3.phone = "+6592705371";
contactDetailsList.add(contactDetails3);
MemberRepository.addMany(contactDetailsList, sgp.id, USER_WITH_EDITMEMBER_PRIVILEGE);
Member member1 = MemberRepository.get("sathya.t@ishafoundation.org", SUPER_USER);
Member member2 = MemberRepository.get("ramya.c@ishafoundation.org", SUPER_USER);
Member member3 = MemberRepository.get("thulasidhar@gmail.com", SUPER_USER);
List<Integer> memberIds = new ArrayList<>();
memberIds.add(member1.id);
memberIds.add(member2.id);
memberIds.add(member3.id);
contactDetailsList.clear();
member1.contactDetails.homeAddress = "block 292b";
member1.contactDetails.singaporeNRIC = "S8079430D";
contactDetailsList.add(member1.contactDetails);
member2.contactDetails.homeAddress = "shivapadam";
contactDetailsList.add(member2.contactDetails);
member3.contactDetails.email = "invalid";
member3.contactDetails.officeAddress = "tao payoh";
contactDetailsList.add(member3.contactDetails);
try {
MemberRepository.updateManyContactDetails(memberIds, contactDetailsList,
USER_WITH_EDITMEMBER_PRIVILEGE);
} catch (APIException ex) {
assertTrue(ex.statusCode == Status.ERROR_RESOURCE_INCORRECTLY_SPECIFIED);
}
member3.contactDetails.email = "thulasidhar@gmail.com";
MemberRepository.updateManyContactDetails(memberIds, contactDetailsList,
USER_WITH_EDITMEMBER_PRIVILEGE);
member1 = MemberRepository.get("sathya.t@ishafoundation.org", SUPER_USER);
member2 = MemberRepository.get("ramya.c@ishafoundation.org", SUPER_USER);
member3 = MemberRepository.get("thulasidhar@gmail.com", SUPER_USER);
assertTrue(member1.contactDetails.email.equals("sathya.t@ishafoundation.org"));
assertTrue(member1.contactDetails.homeAddress.equals("block 292b"));
assertTrue(member1.contactDetails.singaporeNRIC.equals("S8079430D"));
assertTrue(member2.contactDetails.email.equals("ramya.c@ishafoundation.org"));
assertTrue(member2.contactDetails.homeAddress.equals("shivapadam"));
assertTrue(member2.contactDetails.firstName.equals("ramya"));
assertTrue(member2.contactDetails.lastName.equals("chidambaram"));
assertTrue(member3.contactDetails.email.equals("thulasidhar@gmail.com"));
assertTrue(member3.contactDetails.lastName == null);
assertTrue(member3.contactDetails.officeAddress.equals("tao payoh"));
//privilege
try {
MemberRepository.updateManyContactDetails(memberIds, contactDetailsList,
VALID_USER);
assertTrue(false);
} catch (APIException ex) {
assertTrue(ex.statusCode == Status.ERROR_INSUFFICIENT_PERMISSION);
}
}
@Test
public void applyChangesTest() {
ContactDetails contactDetails = new ContactDetails();
contactDetails.email = "sathya.isha@gmail.com";
contactDetails.firstName = "sathya";
contactDetails.lastName = "thilakan";
contactDetails.phone = "+6598361844";
contactDetails.homeAddress = "block 292b";
ContactDetails changes = new ContactDetails();
changes.email = "sathya.t@ishafoundation.org";
changes.middleName = "narayanan";
changes.officeAddress = "level 28, one raffles quay";
contactDetails = MemberRepository.applyChanges(contactDetails, changes);
//todo test changes
assertTrue(contactDetails.email.equals("sathya.t@ishafoundation.org"));
assertTrue(contactDetails.firstName.equals("sathya"));
assertTrue(contactDetails.middleName.equals("narayanan"));
assertTrue(contactDetails.lastName.equals("thilakan"));
assertTrue(contactDetails.phone.equals("+6598361844"));
assertTrue(contactDetails.homeAddress.equals("block 292b"));
assertTrue(contactDetails.officeAddress.equals("level 28, one raffles quay"));
}
@Test
public void addOrUpdateManyTest() {
Center sgp = CenterRepository.add("singapore");
ContactDetails contactDetails = new ContactDetails();
contactDetails.email = "sathya.t@ishafoundation.org";
contactDetails.firstName = "sathya";
MemberRepository.add(contactDetails, sgp.id, SUPER_USER);
contactDetails.email = "thulasidhar@gmail.com";
contactDetails.firstName = "thulasi";
MemberRepository.add(contactDetails, sgp.id, SUPER_USER);
List<ContactDetails> contactDetailslList = new ArrayList<>();
ContactDetails c1 = new ContactDetails();
c1.email = "isha.srividhya@gmail.com";
c1.firstName = "srividhya";
c1.lastName = "radhakrishnan";
contactDetailslList.add(c1);
ContactDetails c2 = new ContactDetails();
c2.email = "isha.vijay@gmail.com";
c2.firstName = "vijaykumar";
c2.lastName = "krishnamurthy";
contactDetailslList.add(c2);
ContactDetails c3 = new ContactDetails();
c3.email = "sathya.t@ishafoundation.org";
c3.lastName = "thilakan";
contactDetailslList.add(c3);
ContactDetails c4 = new ContactDetails();
c4.email = "thulasidhar@gmail.com";
c4.firstName = "thulasidhar";
c4.lastName = "kosalram";
contactDetailslList.add(c4);
MemberRepository.addOrUpdateMany(sgp.id, contactDetailslList, USER_WITH_EDITMEMBER_PRIVILEGE);
Member member = MemberRepository.get("sathya.t@ishafoundation.org", SUPER_USER);
assertTrue(member != null);
assertTrue(member.contactDetails.email.equals("sathya.t@ishafoundation.org"));
assertTrue(member.contactDetails.firstName.equals("sathya"));
assertTrue(member.contactDetails.lastName.equals("thilakan"));
member = MemberRepository.get("thulasidhar@gmail.com", SUPER_USER);
assertTrue(member != null);
assertTrue(member.contactDetails.email.equals("thulasidhar@gmail.com"));
assertTrue(member.contactDetails.firstName.equals("thulasidhar"));
assertTrue(member.contactDetails.lastName.equals("kosalram"));
member = MemberRepository.get("isha.srividhya@gmail.com", SUPER_USER);
assertTrue(member != null);
assertTrue(member.contactDetails.email.equals("isha.srividhya@gmail.com"));
assertTrue(member.contactDetails.firstName.equals("srividhya"));
assertTrue(member.contactDetails.lastName.equals("radhakrishnan"));
member = MemberRepository.get("isha.vijay@gmail.com", SUPER_USER);
assertTrue(member != null);
assertTrue(member.contactDetails.email.equals("isha.vijay@gmail.com"));
assertTrue(member.contactDetails.firstName.equals("vijaykumar"));
assertTrue(member.contactDetails.lastName.equals("krishnamurthy"));
//privilege required
try {
MemberRepository.addOrUpdateMany(sgp.id, contactDetailslList, VALID_USER);
} catch (APIException ex) {
assertTrue(ex.statusCode == Status.ERROR_INSUFFICIENT_PERMISSION);
}
//cannot add more than limit
for (int i = 0; i < Limits.Member.MAX_NUMRECORDS_BULKIMPORT + 1; i++) {
ContactDetails c5 = new ContactDetails();
c5.email = "dummy" + i + "@dummy.com";
contactDetailslList.add(c5);
}
try {
MemberRepository.addOrUpdateMany(sgp.id, contactDetailslList, USER_WITH_EDITMEMBER_PRIVILEGE);
assertTrue(false);
} catch (APIException ex) {
assertTrue(ex.statusCode == Status.ERROR_OUT_OF_BOUNDS);
}
//cannot have duplicate email
contactDetailslList.clear();
contactDetailslList.add(c1);
contactDetailslList.add(c2);
c1.email = "dummy@email.com";
c2.email = c1.email;
try {
MemberRepository.addOrUpdateMany(sgp.id, contactDetailslList, USER_WITH_EDITMEMBER_PRIVILEGE);
assertTrue(false);
} catch (APIException ex) {
assertTrue(ex.statusCode == Status.ERROR_RESOURCE_INCORRECTLY_SPECIFIED);
}
}
}